UNIX MAGAZINE 1994年6月号

キーフレーズ

UNIX MAGAZINE システム ファイル ネットワーク 000 Windows 1994 SPARC アドレス プログラム 場合 SPARCstation コマンド ソフトウェア Macintosh UUCP TCP/IP ファイルシステム Sun FTP 機能 BSD インターネット Ethernet restore アプリケーション 利用 ftp CPU -3 できる anonymous usr 必要 pcnfsd ワークステーション 管理 アドレス空間 MHz -1 可能 対応 接続 シリーズ ツール サポート データ プロトコル etc FAX make tar system インターフェイス Subject クライアント for ファイル名 NFS Message 指定 アクセス 使用 設定 SCSI 日本語 日本 サーバー DOS 文字列 CD-ROM 出力 bin 使っ PostScript HDD SunOS labelgrep -2 登録商標 情報 DEC include オプション watcher リスト 環境 ソースコード sty 米国 開発 実行 IPANeMa GUI 対応機種 ルータ 価格 変更

目次

LittIePerI Pa 0 「 Perl には、文字列や数値データのリストをソートするた めに sort というオペレータが用意されている。したがっ て、自分でソートのアルゴリズムを考えてプログラムを組 む必要はない。 sort オペレータの基本的な使い方は単純 で、引数にソートしたいリストを渡すと、ソートした結果 のリストを返すというものだ。 ( 1 ) は、 "unix" "BSD" "xinu" "System V" という 4 つの文字列要素を含む配列を昇順にソートして出力してい る例である。このように sort オペレータはリストを引数と して受け取り、それをソートした結果のリストを返す。配 列の内容を並べ替えたい場合には、次のようにソートした 結果をもとの配列に代入すればよい。 sort @string—list ; @string—list ( 2 ) は、 ( 1 ) と違って要素に数値データをもつ配列である。 これを ( 1 ) と同しようにソートして出力してみると、ご覧の ような結果になってしまう。理由は、 sort オペレータが与 えられたリストを文字列の大小関係でソートするためであ る。 PerI では、文字列データと数値データはコンテキスト によって適した型に変換されるので、配列の要素が数値だ としても自重加勺に文字列に変換されてしまう。 数値の大小関係でソートするには、その大小を上び交する ための関数を指定しなければならない。 ( 3 ) では、 by-num- ber という関数を定義して、それを sort の最初の引数とし こで、関数の指定とソートするリスト て指定している。 ( カンマ ) を置いてはならない。 のあいたに 比較関数のなかでは、上交する 2 つのデータを $a と $b という変数でアクセスすることができる。 を数値として上交したければ、 $a く = > $b こで、 $a と $b という式を評価すればよい。この式は $ a 〉 $ b ならは 1 、 = $ b ならば 0 、 $ a く $ b ならば一 1 の値をもつ。デ フォルトでは文字列として比較されるので、 $a cmp $b という式を評価していることになる。 cmp は文字列を比 較し、、、く = 〉〃と同しように -1 、 0 、 1 の値をとる。 昇順ではなく降順でソートしたい場合には、数値データ と文字列データそれぞれについて、 $b く = > $a $b cmp $ a という式を使えばよい。 こで ! ()a く = 〉 (b) としてはい けない。否定オペレータの、、にを使うと一 1 も 1 も 0 にな ってしまうからである。 -()a く = 〉 $ b ) ならは大丈夫であ る。 多くの場合、上交関数は 1 カ所でしか使用されない。そ のために、いちいち関数を宣言するのも面倒なので、 sort の引数として ( 4 ) のように、比較関数のプロックを記述する こともできる。このとき、プロックのなかの最後の、、 ( セミコロン ) は省略できる。そのほうが式はすっきりする が、旧いバージョンだとシンタックス・エラーになること があるので注意してほしい。 連想配列と sort sort は、連想配列の内容を表示するためによく使用され る。配列の要素は順序をもっていてその並び方はプログラ マーの意図を反映していることが多いのに対し、連想配列 の要素は保存したときの順序を保ったまま取り出すことが できないからである。 連想配列の要素をキーのアルファベット順で表示する のは簡単である。 ( 1 ) のように、 keys %ENV として、連想配列のキーのリストを取り出し、それをソー トすればよい。このプログラムは printenv コマンドと同 UNIX MAGAZINE 1994.6 し結果を出力する。 値でソートして出力するには、上交関数を定義する必要 がある。 ( 2 ) の例のように、 $a と $ b をキーとする要素どう しを上交する関数を定義すればよい。 環境変数を値でソートして出力してもおもしろくない ので、 /usr/dict/words のなかにある単語の先頭文字の出 現頻度を調べ、その多い順から表示するプログラムの例を ( 3 ) に挙げる。降順にソートするため、 $a と $b の順序が逆 になっていることに注意してはしい。 141

LittIe PerI Pa 0 「 歌代和正 はじめに 2 年半前まで住んでいた町田のアパートにはきれいな椿 の花が咲く広い庭があったので、小さな畑を作ってトマト などを栽培していた。いま住んでいる賃貸マンションは、 ュニークな点がたくさんあって気に入っているのだが、残 念ながら専用の庭は付いていない。そこで練馬区の区民農 園に応募したところ、運よく当選して 4 月から使えること になった。 1 軒あたり 4 坪ほどの面積が割り当てられ、自 分の好きなものを作ることができる。基本的な農機具は農 園に用意されているので、わざわざ買い揃える必要はない。 しかも我が家の場合、歩いて 2 分ほどで農園に行けるとい う恵まれた環境にあるのが嬉しい。 狭い畑とはいえ、ましめに農作業をしようとするとこれ がなかなか難しい。本を読みながら見様見真似でやるしか ないが、「そもそも畑をゞ耕す〃というのは具一勺には何を することなのか ? 」といった基本的な疑問が次々と湧いて くる。先週、鍬を使って畑を掘り返していると、近くで作 業をしていたおしさんが「最初はスコップを使ったはうが 楽だぞ」と教えてくれた。なるはどそのとおりである。『広 辞苑』などの、、へっぴり腰〃の項目に図解を付けるとすれ は、いまの自分の姿はまことにふさわしいものであろう、 などと考えて、日ごろの運動不足のために身体中力むの を紛らしていた。 sort オヘレータ ( 1 ) ② ( 3 ) ( 4 ) 140 # 文字列のソート ("unix @string—list print sort @string—list; "BSD" XInu 出力 : BSD, System V, unix, xinu # 数値データをソートして出力してみる ( 50 , 100 , 0 , 10 , 99 , @number_list = print sort @number—list ; 出力 : 0 , 10 , 100 , 50 , 75 , 99 # 数値のソートは比較関数を指定する ( 50 , 100 , 0 , 10 , 99 , @number_list = sub by—number { print sort by—number @number—list ; 出力 : 0 , 10 , 50 , 75 , 99 , 100 # 比較関数はその場で定義することもできる "System (") ; " であるとする。以下同様 75 ) ; 75 ) ; @sorted = sort {$a く = > $b} @number—list ; # プロックの最後の ; は省略することができる UNIX MAGAZINE 1994.6

ワークステーションの基礎知識 ( 12 ) プで restore にダンプデータを与えれはうまくいきます。 dump/restore の相互運用性 dump はデータ交換のために設計されたものではない そ也の注意 ので、異なる OS で作成されたダンプテープを扱えるかど なんらかの理由でファイルシステム本の restore をし うかは、やってみなければ分かりません。 た場合は、再度フル ( レベル 0 ) ダンプをおこなわなけれ 新しい OS のダンプテープを旧い OS にもっていった ばなりません。 りしないかぎり、現実にはかなりの互換があります。 フルリストアによって i ノード番号が変わるので、以 ただし注意が必なのは、テープ・プロックサイズで 前にとったフルダンプテープと、今後とるインクリメンタ す。デフォルトのテープ・プロックサイズが異なる場合に ル・ダンプテープを組み合わせて restore をすることはで は、 b オプションで正しく設定しなけれはなりません。 きません。注意してください。 ULTRIX のように、テープ・プロックサイズを指定 する機能のない restore のためには、 dump する時点で ULTRIX の dump と同じテープ・プロックサイズを指 定しておく必があります。 ダンプテープを作ったあとでテープ・プロックサイズ の不一致に気づいた場合には、テープ装置を 2 台使って dd でテープ・プロックサイズの変換をおこなうしかあり ません。 ただし、テープが 1 巻のときには、 dd ( これはどの OS でもプロックサイズカ甘旨定できます ) で読み取って、パイ 0 次回は cpio をとりあげて、テープ・アプリケーション 編は終りです。そして ( やっと ) 、サードバーティー製テー フ。装置を接続するガ去の角見に突入する予定です。 ( さいとう・あきのり大阪大学 ) SC 翡 UNIX MAGAZINE 好評連載中「 UN Ⅸへの招待」単行本化第 2 弾 坂本文・著 続・たのしい UN Ⅸーシェルへの招待 1 , 900 円 シェルは、 UNIX の世界のいわば「裏方さん」。その動きや仕組みを知 ・たのしい UN Ⅸ れば、 UN Ⅸがいっそう楽しく、便利に使えるようになります。本書は、 ひろく使われている C シェルを中心に、シェルの使い方から仕組みま ーツルへの招待 本文著 で分かりやすく解説しています。前巻の『たのしい UNIX-——UNIX への招待』とあわせて、ぜひご一読ください。 [ 目次から ] 1 章 知っておきたいコマンド入力のコツ 2 章 シェルとプロセス士組み 3 章 シェルの仕事 4 章 .login と . csh 「 c のサンプル 付録 C シェルの組込みコマンド、シェル変数、メタキャラクタ 株式会社アスキー 〒 1 5 ト 24 東京都渋谷区代々木 4 ー 33 ー 1 0 に・い よし 12 好評発売中 139 UNIX MAGAZINE 1994.6